home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / dviware / quicspool / libqmsquery / qmspfp.y < prev    next >
Text File  |  1990-10-01  |  1KB  |  76 lines

  1. %{
  2. #ifndef lint
  3. static char *rcs = "$Header: qmspfp.y,v 1.1 88/01/15 12:19:26 simpson Rel $";
  4. #endif
  5. /*
  6. $Log:    qmspfp.y,v $
  7.  * Revision 1.1  88/01/15  12:19:26  simpson
  8.  * initial release
  9.  * 
  10.  * Revision 0.1  87/12/11  17:12:09  simpson
  11.  * beta test
  12.  * 
  13. */
  14. #include <stdio.h>
  15. #include <setjmp.h>
  16. #include <local/standard.h>
  17. #include "qms.h"
  18.  
  19. extern FILE    *_Ifp, *_Ofp;
  20. extern Boolean    _FirstChar;
  21. static jmp_buf    Env;
  22. char        *malloc();
  23. static struct qmspfp    *PfpList, *P;
  24. %}
  25. %token PFP NONE ENDLINE
  26. %token <s> STRING
  27. %union {
  28.     char    s[81];
  29. }
  30. %%
  31. pfplines : pfplines pfpline | pfpline ;
  32.  
  33. pfpline : PFP module ENDLINE ;
  34.  
  35. module :
  36.     NONE
  37.     {
  38.         PfpList = NULL;
  39.     }
  40.     |
  41.     STRING
  42.     {
  43.         P = (struct qmspfp *)malloc((unsigned)sizeof(struct qmspfp));
  44.         P->next = PfpList, PfpList = P;
  45.         (void)strcpy(P->module = malloc((unsigned)(strlen($1) + 1)), $1);
  46.     }
  47.     ;
  48. %%
  49. #include "qmspfplex.c"
  50.  
  51. struct qmspfp *qmspfp()
  52. {
  53.     _FirstChar = TRUE;
  54.     PfpList = NULL;
  55.     fputs(QUICON, _Ofp);
  56.     fprintf(_Ofp, "%s00000", SYNTAX);
  57.     fprintf(_Ofp, "%sPFP%s", INFO, ENDCMD);
  58.     fputs(QUICOFF, _Ofp);
  59.     (void)fflush(_Ofp);
  60.     if (setjmp(Env)) {
  61.     while (timedgetc(_Ifp) != EOF)    /* Discard remaining input */
  62.         ;
  63.     return NULL;
  64.     }
  65.     if (yyparse() != 0)
  66.     return NULL;
  67.     yysptr = yysbuf;        /* Resets lex lookahead buffer */
  68.     return PfpList;
  69. }
  70.  
  71. static yyerror(s)
  72. char    *s;
  73. {
  74.     longjmp(Env, TRUE);
  75. }
  76.